/*	
	WeaponSingularityCannon.h
	(c)2004 Palestar, Richard Lyle
	Gadget by, JBud
	Singularity Cannon
*/

#ifndef WEAPON_SINGULARITY_CANNON_H
#define WEAPON_SINGULARITY_CANNON_H

#include "Game/Constants.h"
#include "Game/GadgetWeapon.h"



//----------------------------------------------------------------------------

class WeaponSingularityCannon : public GadgetWeapon
{
public:
	DECLARE_WIDGET_CLASS();

	// NounGadget interface
	Type type() const
	{
		return WEAPON_MEDIUM;
	}
	int maxDamage() const
	{
		return 16000 * enhancementModifier( enhancementSystem(), NounEnhancement::MT_DAMAGE );
	}
	int addValue() const
	{
		return 16000;
	}
	int buildTechnology() const
	{
		return 55;
	}
	int	buildCost() const
	{
		return 250;
	}
	dword buildFlags() const
	{
		return NounPlanet::FLAG_METALS;
	}
	int buildTime() const
	{
		return 970;
	}
	// GadgetWeapon interface
	int energyCost() const	
	{
		return 4748 * enhancementModifier( enhancementSystem(), NounEnhancement::MT_ENERGY );
	}//Added 3500 -JBUD-
	int energyCharge() const
	{
		return 9 * enhancementModifier( enhancementSystem(), NounEnhancement::MT_COOLDOWN );
	}// Negative 3 -JBUD-
	int ammoCost() const
	{
		return 1;
	}
	int ammoMax() const
	{
		return 70;
	}//Added 20 -JBUD-
	int ammoReload() const
	{
		return 2;
	}
	int ammoResources() const
	{
		return 9;
	}
	bool needsTarget() const
	{
		return true;
	}
	bool needsLock() const
	{
		return false;
	}
	int lockTime() const
	{
		return 0;
	}
	dword lockType() const
	{
		return 0;
	}
	bool checkRange() const
	{
		return true;
	}
	bool inheritVelocity() const
	{
		return true;
	}
	bool turret() const
	{
		return true;
	}
	int	maxProjectiles() const
	{
		return 4;
	}
	int projectileCount() const
	{
		return 1;
	}// reduced -1 projectile -JBUD-
	int projectileDelay() const
	{
		return 18;
	}
	bool projectileSmart() const
	{
		return false;
	}
	bool isMine() const
	{
		return false;
	}
	float projectileVelocity() const
	{
		return 265.0f;
	}//Added 50 -JBUD-
	float projectileLife() const
	{
		return 9.0f * enhancementModifier( enhancementSystem(), NounEnhancement::MT_RANGE );
	}
	float projectileSig() const
	{
		return 4.0f;
	}
	bool projectileCollidable() const
	{
		return false;
	}
	bool projectileAutoTarget() const
	{
		return false;
	}
	float turnRate() const
	{
		return 0.0f;
	}
	int tracerRate() const
	{
		return 60;
	}
	int tracerLife() const
	{
		return TICKS_PER_SECOND * 12;
	}
	dword damageType() const
	{
		return DAMAGE_KINETIC | DAMAGE_ENERGY | DAMAGE_EMP;
	}//Added DAMAGE_EMP -JBUD-
	int damage() const
	{
		return 37950 * enhancementModifier( enhancementSystem(), NounEnhancement::MT_DAMAGE );
	}// Added 33000 -JBUD-
	int damageRandom() const
	{
		return 28050 * enhancementModifier( enhancementSystem(), NounEnhancement::MT_DAMAGE );
	}// Added 25000 -JBUD-
	int damageFalloff() const
	{
		return 0;
	}
	int repairRate() const
	{
		return 6;
	}
	int areaDamage() const
	{
		return 24850 * enhancementModifier( enhancementSystem(), NounEnhancement::MT_DAMAGE );
	}// Added 21000 -JBUD-
	int areaDamageRandom() const
	{
		return 15350 * enhancementModifier( enhancementSystem(), NounEnhancement::MT_DAMAGE );
	}// Added 12000 -JBUD-
	float areaDamageRadius() const
	{
		return 250.0f;
	}// Added 235 -JBUD-
	float armTime() const
	{
		return 0.0f;
	}
};

//----------------------------------------------------------------------------



#endif

//----------------------------------------------------------------------------
// EOF
